package DAO;

import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;
import TO.AutorTO;
import TO.UsuarioTO;

public class AutorDAO {
	
	public AutorDAO(){
	}
	
	/**
	 * 
	 * @param autor
	 * @return boolean
	 */
	public static boolean inserir(AutorTO autor) {
		
		try {
			Session sessao = HibernateUtil.getSession();
						
			Transaction transaction = sessao.beginTransaction();		
			sessao.save(autor);
			
			transaction.commit();
			sessao.close();
			
			return true;
			
		} catch(Exception e){
			System.out.println(e.getMessage());
			return false;
		}		
	}
	
	public static boolean atualizar(AutorTO autor) {
		
		try {
			Session sessao = HibernateUtil.getSession();
						
			Transaction transaction = sessao.beginTransaction();
			sessao.update(autor);
			
			transaction.commit();
			sessao.close();
			
			return true;
			
		} catch(Exception e){
			System.out.println(e.getMessage());
			return false;
		}		
	}
	
	public static boolean deletar(AutorTO autor) {
		boolean resultado = false;
		try {
			Session sessao = HibernateUtil.getSession();
						
			Transaction transaction = sessao.beginTransaction();
			sessao.delete(autor);
			transaction.commit();
			sessao.close();
			
			resultado = true;
			
		} catch(Exception e){
			System.out.println(e.getMessage());
			resultado = false;
		}	
		
		return resultado;
	}
	
	/**
	 * 
	 * @param autor
	 * @return
	 */
	public static List<AutorTO>  consultar(String autor1){
		String autor = "%"+autor1+"%"; 
		List<AutorTO> lista = new ArrayList<AutorTO>(); 
		try {
			Session session = HibernateUtil.getSession();  
		    
		    lista = session.createQuery("from AutorTO where nome like ?")
	    	.setString(0, autor)
	    	.list();
			
		    session.close();
			
		} catch(Exception e)
			{System.out.println(e.getMessage());
		}
		
		return lista;
	}
	
	/**
	 * 
	 * @param cod_autor
	 * @return AutorTO
	 */
	public static AutorTO  consultar(Integer cod_autor){
		 
		List<AutorTO> lista = new ArrayList<AutorTO>();
		AutorTO autor = null;
		autor = new AutorTO();
		
		try {
			Session session = HibernateUtil.getSession();  
		    
		    lista = session.createQuery("from AutorTO where id = ?")
	    	.setInteger(0, cod_autor)
	    	.list();
			
		    session.close();
		    
		    autor = lista.get(0);
			
		} catch(Exception e)
			{System.out.println(e.getMessage());
		}
		
		return autor;
	}

	public static List<AutorTO> listar() {
		List<AutorTO> lista = new ArrayList<AutorTO>(); 
	    
		try {
		    Session session = HibernateUtil.getSession();  
		    
		    lista = session.createQuery("from AutorTO")
	    	.list();
			
		    session.close();
		    
		} catch(Exception e)
			{System.out.println(e.getMessage());
		}
		
		return lista;
	}

}
